//
// Created by 25192 on 25-6-26.
//

#ifndef MEASURE_H
#define MEASURE_H
#include "main.h"
#include "AD9851.h"
#include "arm_const_structs.h"
#include "transform_functions.h"
#include "measure.h"
#include "tim.h"
#include "adc.h"
#include <tgmath.h>


/* 函数声明 */
void adjust_ADSR(u16 sample_rate);
void ADstart(u16 sample_num);
void Mea20Delay(void);
void ADstart_detect(void);
void MeasRi(void);
void MeaRo(void);
void MeaAv(void);
void MeaHf(void);
void MeaAf(void);
void MeafH(void);
void sendAFDispdata(void);
void errordetect(void);

/* 全局变量声明 */
extern u8 mode;
extern u8 mea_step;
extern u8 freq_step;
extern vu8 flag_readkey;
extern vu8 flag_keyprocess;
extern vu8 flag_mea_start;
extern vu8 flag_ad_finish;
extern vu8 flag_flash;
extern vu8 flag_det_ad_start;

extern u32 dds_freq;

extern u32 adc_buf[1536];
extern u16 ad_Vin[512];
extern u16 ad_Iin[512];
extern u16 ad_Vout[512];
extern float ad_Vin_fft[2048];
extern float ad_Vout_fft[2048];
extern u8 cnt_AD_times;

extern u32 Vin_max;
extern u32 Vin_min;
extern u32 Iin_max;
extern u32 Iin_min;
extern u32 Vout_max;
extern u32 Vout_min;
extern u32 Vin_Vpp;
extern u32 Iin_Vpp;
extern u32 Vout_Vpp;
extern u32 Vout_av;
extern u32 Av_100;
extern u32 Av_200k;
extern double phase_diff;
extern double phase_diff_n;
extern u32 Vin_Vpp_n;
extern u32 Iin_Vpp_n;
extern u32 Vout_Vpp_n;
extern u32 Vout_av_n;
extern u32 Av_100_n;
extern u32 Av_200k_n;
extern u32 Vout_sum;
extern u32 Vin_Vpp_sum;
extern u32 Iin_Vpp_sum;
extern u32 Vout_Vpp_sum;
extern u32 Vout_av_sum;

extern u32 Ri_mea;
extern u32 Ro_mea;
extern u8 Ro_times;
extern u32  Av_mea;
extern u32 beta_HF;
extern u32 fH_mea;
extern u32 Av_Afmea[10];
extern u8 Av_dispdata[275];

extern u8 Comp[7];
extern u8 Comp_Reason;
extern u8 Comp_num;
#endif //MEASURE_H
